<?php

require_once ('BaseService.php');

//DONE.
/**
 * @author Virtualidad
 * @version 1.0
 * @created 29-dic-2010 09:57:49 a.m.
 */
class EstudiantesService extends BaseService {

    /**
     *
     * @param Id
     */
    function GetById($Id) {
        $response = parent::invokeService("GetById", $Id, true);
        Loader::using("models::entities::Estudiantes");
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "Estudiantes", Estudiantes::MAPPING());
        return $result;
    }

    /**
     *
     * @param int $idEstudiante
     * @return <type>
     */
    function GetLastPeriodoMatriculado($idEstudiante) {
        $response = parent::invokeService("GetLastPeriodoMatriculado", $idEstudiante, true);
        Loader::using("models::entities::PeriodoAcademico");
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "PeriodoAcademico");
        return $result;
    }

    /**
     *
     * @param Estudiantes $estudiante
     * @return <type>
     */
    function Create(Estudiantes $estudiante, Encuestas $Encuesta) {

        $serializer = parent::getSerializer(parent::getMimeType(), "Estudiantes");
        $data = $serializer->serialize($estudiante);
        $dataEncuesta = $serializer->serialize($Encuesta);

        $data = $serializer->wrapArray(array(
                    "Estudiante" => $data,
                    "Encuesta" => $dataEncuesta
                ));

        $response = parent::invokeService("Create", $data);
        return $response;
    }

    function Update($Estudiante) {
        $serializer = parent::getSerializer(parent::getMimeType(), "Estudiantes");
        $data = $serializer->serialize($Estudiante);
        $response = parent::invokeService("Update", $data);
        return $response;
    }

    public function GetListaEstudianteByCurso(CursoPk $CursoPk) {
        $encoder = parent::getSerializer(parent::getMimeType(), "CursoPk");
        $curso = $encoder->serialize($CursoPk);
        $response = parent::invokeService("GetListaEstudianteByCurso", $curso);
        Loader::using("models::entities::Estudiantes");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "Estudiantes", Estudiantes::MAPPING());
        return $result;
    }

    public function GetPeriodos($codigoEstudiante){
        $response = parent::invokeService("GetPeriodos", $codigoEstudiante);
        Loader::using("models::entities::PeriodoAcademico");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "PeriodoAcademico");
        return $result;
    }

    public function GenerarVolantePago($codigoEstudiante){
        $response = parent::invokeService("GenerarVolantePago", $codigoEstudiante);
        return $response;
    }


    public function getServiceClass() {
        return "Estudiantes";
    }
    
}

?>
